#ifndef ZIGBUSANALOGICREFERENCE_H
#define ZIGBUSANALOGICREFERENCE_H

#include "ZigbusItem.h"

#define ANALOG_REF_SIZE 3
#define REF_ANALOG_DEFAULT 0x00
#define REF_ANALOG_INTERNAL 0x01
#define REF_ANALOG_INTERNAL_1V1 0x02
#define REF_ANALOG_INTERNAL_2V56 0x03
#define REF_ANALOG_EXTERNAL 0x04

class ZigbusAnalogicReference : public ZigbusItem
{
public:
    ZigbusAnalogicReference();
    ZigbusAnalogicReference(int value);
    ZigbusAnalogicReference(const ZigbusAnalogicReference& other);
    virtual ~ZigbusAnalogicReference() { }
    static ZigbusAnalogicReference DEFAULT() { return ZigbusAnalogicReference(REF_ANALOG_DEFAULT); }
    static ZigbusAnalogicReference INTERNAL() { return ZigbusAnalogicReference(REF_ANALOG_INTERNAL); }
    static ZigbusAnalogicReference INTERNAL_1V1() { return ZigbusAnalogicReference(REF_ANALOG_INTERNAL_1V1); }
    static ZigbusAnalogicReference INTERNAL_2V56() { return ZigbusAnalogicReference(REF_ANALOG_INTERNAL_2V56); }
    static ZigbusAnalogicReference EXTERNAL() { return ZigbusAnalogicReference(REF_ANALOG_EXTERNAL); }
    static ZigbusAnalogicReference INVALID() { return ZigbusAnalogicReference(-1); }
    virtual QString text() const;
    virtual QString type() const { return "analogic_ref"; }

};

#endif // ZIGBUSANALOGICREFERENCE_H
